Miles Sound System SDK 7.2a

DLS Services

Discussion

The Miles Sound System DLS Extensions package delivers full support for the MIDI Manufacturers Association's Downloadable Sounds (DLS) Level 1 specification. Available for Win32, Win64, MacOS and DOS, the DLS Extensions package consists of a simple application program interface (API) provided by either a statically- or dynamically-linked library.

The Downloadable Sounds Level 1 Architecture enables the author to define an instrument by combining a sample waveform with articulation information - a description of how to modulate the volume and pitch of the wave data in response to input from the General MIDI control set. A file containing DLS 1 instruments may be played directly in software with the MSS DLS Extensions package, or downloaded to any hardware device that supports the standard, and subsequently invoked from within a MIDI file without any special effort on the composer's part. In this way, the DLS standard delivers a common playback experience across a wide range of synthesizer platforms, eliminating concerns about inconsistencies between General MIDI instrument sets while simultaneously easing the creative restrictions imposed by the default General MIDI instrument palette.

Authoring Guidelines

To create DLS files, you will, of course, need a DLS editor. Several companies (the usual suspects, you might say) are working on DLS editors, but the only editor available at this writing (March 1, 1998) is SynthAuthor, which is available from the M.M.A. for $40.00.

The Miles Sound System's DLS support is designed for use with the existing MSS MIDI subsystem. All XMIDI functions, controllers, and features are available when DLS is in use. DLS patches are invoked in the normal way, with MIDI Program Change messages; however, it is recommended that the General MIDI bank-select controllers (0 and 32) be used instead of XMIDI Patch Bank Select (114) for all future work. In the MSS software DLS synthesizer, XMIDI Patch Bank Select emulates the GM bank controllers correctly, but this emulation is not supported by hardware-based synthesizer platforms.

Hardware/Software Interoperability

Under 32-bit Windows, the internal MSS software synthesizer API is upwardly-compatible with the API supported by the S3 86C617 Sonic Vibes(TM); chipset. Consequently, it is possible to design your application to choose between hardware- and software-based DLS providers at runtime.

This is why the Miles DLS services allow you to specify a DLS provider DLL filename in the AIL_DLS_open function - right now, you can use NULL for the software synthesizer, "S3BASE.DLL" for hardware support on Sonic Vibes sound cards, and "VORT_DLS.DLL" for hardware support on Aureal Vortex chipsets. Future versions of the Miles Sound System will be delivered with support via similar DLLs for additional platforms, such as Microsoft DirectMusic's hardware abstraction layer, so it is strongly recommended that Win32 and Win64 applications provide for dynamic selection of DLS provider DLLs.

Software Performance and Preferences

The Miles software synthesizer has many options to control the amount of CPU it extracts. Not only can you control the quality at which the digital sound from the synthesizer is created (rate, bits, and channels), but you can also adjust filtering and reverb parameters with the DLS preferences described in the Preferences section.

DLS Services
AIL_DLS_open opens a handle to a downloadable sample device.
AIL_DLS_close closes a previously opened DLS device.
MILES_DLS_CLOSE_FLAGS specifies optional closing flags to AIL_DLS_close.
AIL_DLS_load_file loads an uncompressed DLS file into the specified DLS device.
AIL_DLS_load_memory loads an uncompressed DLS file memory image into the specified DLS device.
AIL_DLS_unload unloads a previously loaded DLS file ID and makes the sample memory available for other DLS files.
MILES_DLS_UNLOAD describes optional DLS unload flags.
AIL_DLS_compact compacts the memory of a hardware DLS device.
AIL_DLS_get_info retrieves information about the specified DLS device.
AILDLSINFO specifies the details for a DLS device.
AIL_DLS_sample_handle returns the underlying HSAMPLE associated with a given DLS synthesizer instance.

For technical support, e-mail Miles3@radgametools.com
© Copyright 1991-2007 RAD Game Tools, Inc. All Rights Reserved.